home *** CD-ROM | disk | FTP | other *** search
/ Business Assistant / Business Assistant.iso / indus / re_inv / re-inv.bas
BASIC Source File  |  1980-01-01  |  32KB  |  814 lines

  1. 5 REM "INVESTII.BAS"
  2. 10 REM *******************************************************
  3. 20 REM RENTAL PROPERTY INVESTMENT ANALYSIS BY L. E. SPARKS
  4. 30 REM VERSION 2.0 19 JULY 1980 32K TRS-80 DISK BASIC
  5. 35 REM CONVERTED TO IBM PC BASIC BY BILL BAINES - JAN 23, 1986
  6. 40 REM *******************************************************
  7. 50 CLS:KEY OFF:COLOR 12,0
  8. 60 CLEAR 1000
  9. 70 PRINT 
  10. 80 PRINT STRING$(79,205)
  11. 90 PRINT TAB(15)"RENTAL PROPERTY INVESTMENT ANALYSIS "
  12. 100 PRINT TAB(15)"             BY"
  13. 110 PRINT TAB(15)"     L. E. SPARKS VERSION 2.0"
  14. 120 PRINT STRING$(79,205)
  15. 125 COLOR 11,0
  16. 130 GOSUB 7060
  17. 140 PRINT STRING$(80,196)
  18. 150 PRINT"ENTER PROPERTY IDENTIFICATION INFORMATION."
  19. 155 LOCATE 5,1:PRINT STRING$(79,196):LOCATE 4,1
  20. 160 LINE INPUT ZZ$
  21. 170 CLS
  22. 180 PRINT "INITIALIZATION "
  23. 190 DEFINT J,K
  24. 200 DEFSTR F
  25. 210 DIM F$(41),E(20),EF(20),FT(12),R(12),RY(12),NU(12),Z(30),EQ(20),EY(20),DS(30)
  26. 230 DIM P1(35),P2(35),P3(35),P4(35)
  27. 240 REM TX TAX PAID,RA AFTER TAX INCOME,CF C AS H FLOW AFTER TAX
  28. 250 DIM RX(30),RF(30),RZ(30),RT(30),RL(30),RI(30),RG(30)
  29. 260 DIM TX(30),RA(30),CF(30),DF(30),SF(30)
  30. 270 GOSUB 7350
  31. 280 GOSUB 1150
  32. 290 JM = +1
  33. 300 CLS
  34. 310 GOSUB 3390
  35. 320 IF JM = -1 THEN 280
  36. 330 GOSUB 3860
  37. 340 GOSUB 4690
  38. 350 PRINT"DO YOU WANT HARD COPY ?"
  39. 360 GOSUB 410
  40. 370 IF Y$="Y" THEN GOSUB 5630
  41. 380 PRINT"DO YOU WANT TO DO ANOTHER ANALYSIS ?"
  42. 390 GOSUB 410
  43. 400 IF Y$="Y" THEN 280 ELSE END
  44. 410 REM GET CHARACTER
  45. 420 Y$=INKEY$:IF Y$="" THEN 420 ELSE IX=ASC(Y$)
  46. 421 IF LEN(Y$)=1 THEN GOTO 430
  47. 422 Y$=MID$(Y$,2,1):IX=ASC(Y$)
  48. 423 IF IX=72 THEN IX=24:GOTO 430
  49. 424 IF IX=80 THEN IX=25:GOTO 430
  50. 425 IF IX=77 THEN IX=9:GOTO 430
  51. 426 IF IX=75 THEN IX=9:GOTO 430
  52. 427 GOTO 410:REM INVALID INPUT
  53. 430 RETURN
  54. 440 REM NUMERIC INPUT 
  55. 450 IC = JV
  56. 460 IF IC = 0 THEN IC =55
  57. 470 V$=Y$
  58. 480 IF Y$="$" THEN V$=""
  59. 490 IF Y$="," THEN V$=""
  60. 500 Z$=Y$
  61. 510 REM
  62. 520 LOCATE JP,IC:PRINT Z$;:COLOR 14,0:PRINT CHR$(16);"  ";:COLOR 11,0
  63. 530 GOSUB 410 :'GO GET A CHARACTER
  64. 540 IF IX=13 THEN RETURN :'RETURN IF ENTER PRESSED
  65. 550 IF IX = 8 THEN 560 ELSE 580
  66. 560 IF LEN(V$) = 0 THEN 580
  67. 570 IF MID$(Z$,LEN(Z$),1) <> "," THEN V$= LEFT$(V$,LEN(V$)-1)
  68. 580 IF IX= 8 THEN IF LEN(Z$)>0 THEN Z$=LEFT$(Z$,LEN(Z$)-1)
  69. 590 IF IX = 8 THEN 510
  70. 600 IF IX>31 THEN Z$=Z$+Y$
  71. 610 IF Y$="," THEN 650
  72. 620 IF Y$="$" THEN 650
  73. 630 IF Y$="%" THEN 650
  74. 640 V$=V$+Y$
  75. 650 GOTO 510
  76. 660 STOP
  77. 670 REM INSTRUCTION SUBROUTINE
  78. 680 PRINT  " MAY BE USED TO CHANGE PAGES.  ";
  79. 690 PRINT CHR$(24);"  ";CHR$(25);" ";CHR$(26);" ";CHR$(27);" ARE ACTIVE .               ";
  80. 700 PRINT"USE G TO START CALCULATIONS.  ";
  81. 710 PRINT"ENTER DATA  TO CHANGE";
  82. 720 RETURN
  83. 730 REM UPDATE INSTRUCTION S
  84. 740 LOCATE 23,1:PRINT STRING$(79,196);
  85. 760 LOCATE 24,1:PRINT"USE ";CHR$(27); " FOR CORRECTIONS ";
  86. 770 PRINT"ENTER REST OF ITEM AND <ENTER> TO CHANGE";
  87. 780 RETURN
  88. 790 REM POINTER CONTROL
  89. 795 IF JP=0 THEN JP=1
  90. 796 IF JV=0 THEN JV=1
  91. 800 LOCATE JP,JV:COLOR 14,0:PRINT CHR$(16);:COLOR 11,0
  92. 810 GOSUB 410:'GO GET A CHARACTER
  93. 820 LOCATE JP,JV:PRINT"   ";
  94. 830 ID=0
  95. 840 JD=0
  96. 850 IF IX=27 OR IX=24 THEN ID=-1
  97. 860 IF IX=25 OR IX=10 OR IX=13 THEN ID=ID+1
  98. 870 IF IX =8 THEN JD =-JA ELSE IF IX=9 THEN JD=+JA
  99. 880 JV=JV+JD
  100. 890 IF JV>JM THEN JV=JN ELSE IF JV<JN THEN JV=JM
  101. 900 IP=IP+ID
  102. 910 IF IP<1 THEN IP=MX
  103. 920 IF IP>MX THEN IP=1
  104. 930 JP=IP+IJ
  105. 940 RETURN
  106. 950 REM POINTER CONTROL FOR INCOME SUB
  107. 960 IF IP = 8 THEN JV = 0 ELSE JV = IC
  108. 965 IF JP=0 THEN JP=1
  109. 966 IF JV=0 THEN JV=1
  110. 970 LOCATE JP,JV:COLOR 14,0:PRINT CHR$(16);:COLOR 11,0
  111. 980 GOSUB 410
  112. 990 LOCATE JP,JV:PRINT"  ";
  113. 1000 ID = 0 : JD = 0
  114. 1010 IF IX = 27 OR IX = 24 THEN ID = -1
  115. 1020 IF IX = 26 OR IX = 10 OR IX = 13 OR IX = 25 THEN ID = +1
  116. 1030 IF IX = 8 THEN JD =-14
  117. 1040 IF IX = 9 THEN JD = +14
  118. 1050 IF IP = MX AND ID = -1 THEN IP = IP -2: GOTO 1080
  119. 1060 IP = IP + ID
  120. 1070 IC = IC + JD
  121. 1080 IF IP <1 THEN IP = MX
  122. 1090 IF IP = 7 THEN IP = MX:JV = 0
  123. 1100 IF IP > MX THEN IP = 1
  124. 1110 IF IC >30 THEN IC = 16
  125. 1120 IF IC < 16 THEN IC = 30
  126. 1130 JP = IP + IJ
  127. 1140 RETURN
  128. 1150 REM PAGE 1
  129. 1160 JP=7
  130. 1170 IP=1
  131. 1180 IJ =6:JV=28
  132. 1190 IF JM = -1 THEN 2710
  133. 1200 JN=28:JM=48:JA=20
  134. 1210 CLS:PRINT:PRINT STRING$(79,205): PRINT"* PAGE 1 OF 5 PAGES * FIXED EXPENSES *"
  135. 1220 PRINT STRING$(79,205)
  136. 1230 PRINT "     ITEM ";TAB(40);"$/MO               $/YR"
  137. 1240 PRINT STRING$(79,196)
  138. 1250 FOR J = 1 TO 6
  139. 1260 PRINT" ";
  140. 1270   PRINT USING F(J);EF(J);:PRINT USING "      $###,###.##";EY(J)
  141. 1280 NEXT J
  142. 1285 PRINT STRING$(79,196)
  143. 1290 JZ = 832
  144. 1300 LOCATE 23,1:PRINT"> ";
  145. 1310 GOSUB 670 : 'PRINT INSTRUCIONS
  146. 1320 IC =45:MX=5
  147. 1330 GOSUB 790
  148. 1340 IF ID<>0 THEN 1330 ELSE ID=1
  149. 1350 IF IX<32 THEN 1330
  150. 1360 IF Y$="G" THEN RETURN
  151. 1370 IF Y$=">" THEN 1580
  152. 1380 IF Y$ = "<" THEN 1150
  153. 1390 GOSUB 730
  154. 1400 GOSUB 1480
  155. 1410 GOSUB 1540
  156. 1420 IP=IP+1
  157. 1430 IF IP<1 THEN IP=MX
  158. 1440 IF IP>MX THEN IP=1
  159. 1450 JP=IP+IJ
  160. 1460 CLS
  161. 1470 GOTO 1210
  162. 1480 REM UPDATE INFORMATION
  163. 1490 GOSUB 440
  164. 1500 IF JV=JM THEN EY(IP)=VAL(V$):EF(IP)=EY(IP)/12:RETURN
  165. 1510 EF(IP) = VAL(V$)
  166. 1520 EY(IP)=12!*EF(IP)
  167. 1530 RETURN
  168. 1540 REM CALCULATE TO TAL COSTS
  169. 1550 EF(6) = EF(1)+EF(2)+EF(3)+EF(4)+EF(5)
  170. 1560 EY(6) = EY(1)+EY(2)+EY(3)+EY(4)+EY(5)
  171. 1570 RETURN
  172. 1580 REM PAGE 2
  173. 1590 IP=1:JP=4:IJ=3
  174. 1600 JV=28:JN=28:JM=48:JA=20
  175. 1610 CLS
  176. 1620 PRINT "** PAGE 2 OF 5 PAGES ** OPERATING COSTS **"
  177. 1630 PRINT"ITEM";TAB(33);"$/MO                 $/YR"
  178. 1640 PRINT STRING$(79,196)
  179. 1650 FOR J= 1 TO 12
  180. 1660   PRINT USING F(J+6);E(J);:PRINT SPC(8);:PRINT USING F(0);EQ(J)
  181. 1670 NEXT J
  182. 1675 PRINT STRING$(79,196)
  183. 1680 JZ = 896 +64
  184. 1690 LOCATE 23,1:PRINT"< OR >";
  185. 1700 MX=11: IC =45
  186. 1710 GOSUB 670
  187. 1720 GOSUB 790
  188. 1730 IF ID<>0 THEN 1720 ELSE ID=1
  189. 1740 IF IX<32 THEN 1720
  190. 1750 GOSUB 730
  191. 1760 IF Y$="G" THEN RETURN
  192. 1770 IF Y$="<" THEN 1150
  193. 1780 IF Y$=">" THEN 2000
  194. 1790 GOSUB 1860
  195. 1800 GOSUB 1920
  196. 1810 IP=IP+1
  197. 1820 IF IP<1 THEN IP=MX
  198. 1830 IF IP>MX THEN IP=1
  199. 1840 JP = IP + IJ
  200. 1850 GOTO 1610
  201. 1860 REM UPDATE COSTS
  202. 1870 GOSUB 440
  203. 1880 IF JV=JM THEN EQ(IP)=VAL(V$):E(IP)=EQ(IP)/12!:RETURN
  204. 1890 E(IP)=VAL(V$)
  205. 1900 EQ(IP)=E(IP)*12!
  206. 1910 RETURN
  207. 1920 REM SUM TOTAL EXPENSES
  208. 1930 E(12)=0
  209. 1940 EQ(12)=0
  210. 1950 FOR JJ = 1 TO 11
  211. 1960    E(12)=E(12)+E(JJ)
  212. 1970   EQ(12) = EQ(12)+EQ(JJ)
  213. 1980 NEXT JJ
  214. 1990 RETURN
  215. 2000 REM INCOME ESTIMATES GO HERE
  216. 2010 IJ = 3
  217. 2020 MX = 8
  218. 2030 IP = 1 
  219. 2040 IF IP = MX THEN 2590
  220. 2050 IC = 16
  221. 2060 JP = 4
  222. 2070 JV=28:JA=20:JN=28:JM=48
  223. 2080 CLS
  224. 2090 IF IP = MX THEN JV = 0 ELSE JV = IC
  225. 2100 PRINT "*** PAGE 3 OF 5 PAGES *** INCOME ESTIMATES ***"
  226. 2110 PRINT STRING$(79,196)
  227. 2120 PRINT"TYPE OF UNIT ";TAB(18);"# UNITS";TAB(32);"RENT $/MO";TAB(50);"RENT $ YR"
  228. 2130 FOR J = 1 TO NT
  229. 2140   PRINT "   ";
  230. 2150    PRINT FT(J);TAB(20);NU(J);TAB(32);
  231. 2160    PRINT USING "$###,###.##";R(J);: PRINT TAB(50);
  232. 2170    PRINT USING F(0);RY(J)
  233. 2180 NEXT J
  234. 2190 PRINT "**** TOTAL ";TAB(20);NS;TAB(31);
  235. 2200 PRINT USING "$#,######.##";RM;:PRINT TAB(50);
  236. 2210 PRINT USING F(0);RY
  237. 2220 PRINT"   ";
  238. 2230 PRINT USING F(41);VA
  239. 2240 PRINT"****";:PRINT USING " DOLLAR COST OF VACANCY   $###,###.##/YR";VA*RY/100!
  240. 2250 RG = RY*(100!-VA)/100
  241. 2260 PRINT "****";:PRINT USING" ADJUSTED GROSS RENTS    $#,######.##/YR";RG:PRINT STRING$(79,196)
  242. 2270 LOCATE 23,1:PRINT "< & > MAY BE USED TO CHANGE PAGES ";
  243. 2280 PRINT CHR$(24);" ";CHR$(25);" ";CHR$(26); " ";CHR$(27);" ARE ACTIVE";
  244. 2290 PRINT "  ENTER NEW DATA  TO CHANGE. PRESS G TO START CALCULATIONS ";
  245. 2300 GOSUB 950
  246. 2310 MX = 8:IJ=3
  247. 2320 IF ID <> 0 THEN 2300 ELSE ID = 1
  248. 2330 IF IX < 31 THEN 2300
  249. 2340 IF Y$ = "G" THEN RETURN
  250. 2350 IF Y$ ="<" THEN 1580
  251. 2360 IF Y$ = ">" THEN 2710
  252. 2370 JZ = 832
  253. 2380 GOSUB 730
  254. 2390 GOSUB 2500
  255. 2400 GOSUB 2600
  256. 2410 IF IP = MX THEN 2440
  257. 2420 IF IC <30 THEN IC = 30 :GOTO 2080
  258. 2430 IF IC > 16 THEN IC =16
  259. 2440 IP = IP + 1
  260. 2450 IF IP >MX THEN IP =1
  261. 2460 IF IP < 1 THEN IP =MX
  262. 2470 JP = IP+IJ
  263. 2480 IF IP = 7 THEN IP = MX
  264. 2490 GOTO 2080
  265. 2500 REM DATA  ENTRY
  266. 2510 GOSUB 440
  267. 2520 IF IP = MX THEN 2590
  268. 2530 IF IC = 30 THEN 2560 : REM TO ENTER RENTS
  269. 2540 NU(IP) = VAL(V$)
  270. 2550 GOTO 2570
  271. 2560 R(IP)=VAL(V$)
  272. 2570 RY(IP) = R(IP)*NU(IP)*12
  273. 2580 RETURN
  274. 2590 VA = VAL(V$): IC = 16:RETURN
  275. 2600 REM SUM UP TO TALS
  276. 2610 NS